package com.sayimo.maker.mall.orders.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.jdom2.JDOMException;

import com.sayimo.framework.common.MessageObject;
import com.sayimo.framework.exception.DaoException;
import com.sayimo.framework.exception.ServiceException;
import com.sayimo.maker.mall.orders.vo.OrdersList;


/**
 * @Project: sayimoWeixinWeb
 * @ClassName: OrdersListInterfaceService.java
 * @Description: 订单
 * @Package com.sayimo.weixin.web.service.admin
 * @Author: 陈培永
 * @Date: 日期：2015年8月29日 时间：下午5：48
 * @Version 1.0.0
 */
public interface OrdersListInterfaceService {

	/**
	 * @Title: generateOrdersBygoods
	 * @Author: 王瑞清
	 * @Date:日期：2016年1月4日 时间：下午4:19:54
	 * @Description: 生成订单（从商品详情下订单）
	 * @param request
	 * @throws ServiceException
	 * @return Map<String,Object>
	 * @Version 1.0.0
	 */
	public Map<String, Object> insertOrdersByGoods(HttpServletRequest request) throws ServiceException;

	/**
	 * @Title: generateOrdersByShoppingcart
	 * @Author: 王瑞清
	 * @Date:日期：2016年1月4日 时间：下午4:20:27
	 * @Description: 购物车生成订单（从购物车下订单）
	 * @param request
	 * @throws ServiceException
	 * @return Map<String,Object>
	 * @Version 1.0.0
	 */
	public Map<String, Object> insertOrdersByShoopingCart(HttpServletRequest request) throws ServiceException;


	
	/**
	 * @Title: queryMemberCustomerOrderList
	 * @Author: 曹频辉
	 * @Date:日期：2016年1月6日 时间：上午11:36:05
	 * @Description: 查询用户指定状态的订单列表
	 * @param customerId
	 * @param status
	 * @return Map
	 * @Version 1.0.0
	 */
	public Map editMemberCustomerOrderList(Integer customerId, Integer status, Integer pageSize, Integer pageNow,Integer mallType,Integer orderType) throws ServiceException;
	
	/** 
	* @Title: queryOrderDetailsById 
	* @Author: 王瑞清
	* @Date:日期：2016年1月7日  时间：下午5:51:01
	* @Description: 订单详情
	* @param id
	* @throws ServiceException
	* @return OrdersList
	* @Version 1.0.0
	*/ 
	public Integer queryOrdersListTotal(List<Integer> ids) throws ServiceException;
	
	/**
	 * 
	 * @MethodName payOrder
	 * @Description 订单支付
	 * 
	 * @author chenpy
	 * @date 2016年1月8日 下午2:16:47
	 * @param 
	 * @return Map
	 * @VERSION 1.0.0
	 */
	@SuppressWarnings("rawtypes")
	public Map updatePayOrder(HttpServletRequest request) throws Exception;
	
	/** 
	* @Title: orderTotalMoney 
	* @Author: 王瑞清
	* @Date:日期：2016年1月8日  时间：下午6:08:14
	* @Description: 订单总金额
	* @param ordersIdArray
	* @throws ServiceException
	* @return Double
	* @Version 1.0.0
	*/ 
	public Double orderTotalMoney(Integer[] ordersIdArray) throws ServiceException;
	
	/**
	 * 
	 * @MethodName 微信支付成功回调
	 * @Description Description
	 * 
	 * @author chenpy
	 * @date 2016年1月9日 上午11:44:58
	 * @param 
	 * @return Map
	 * @VERSION 1.0.0
	 */
	@SuppressWarnings("rawtypes")
	public Map updatePaySuccess() throws Exception;
	
	
	/** 
	* @Title: queryOrdersTotalMoneyByIds 
	* @Author: 王瑞清
	* @Date:日期：2016年1月9日  时间：下午6:04:58
	* @Description: 订单价格合计
	* @param ids
	* @throws ServiceException
	* @return Map<String,Object>
	* @Version 1.0.0
	*/ 
	public Map<String,Object> queryOrdersTotalMoneyByIds(List<Integer> ids) throws ServiceException;
	
	
	/** 
	* @Title: updateOrdertotalAmountById 
	* @Author: 王瑞清
	* @Date:日期：2016年1月11日  时间：下午5:26:04
	* @Description: 更新订单价格
	* @throws ServiceException
	* @return void
	* @Version 1.0.0
	*/ 
	public void updateOrdertotalAmountById(Integer id) throws ServiceException;
	
	
	/** 
	* @Title: queryOrdersListById 
	* @Author: 王瑞清
	* @Date:日期：2016年1月12日  时间：下午3:40:24
	* @Description: 按ID查询
	* @param id
	* @throws ServiceException
	* @return OrdersList
	* @Version 1.0.0
	*/ 
	public OrdersList queryOrdersListById(Integer id) throws ServiceException;
	
	
	/**
	 * 
	 * @MethodName confirmReceive
	 * @Description 确认收货
	 * 
	 * @author chenpy
	 * @date 2016年1月13日 下午12:33:35
	 * @param 
	 * @return Map<String,Object>
	 * @VERSION 1.0.0
	 */
	public Map<String,Object> updateConfirmReceive(Map<String, Object> ... paramMaps) throws ServiceException;
	/**
	* @Package com.sayimo.maker.mall.orders.service
	* @Author 谭新
	* @MethodName: unconfirmOrderTransferProvider
	* @Description:转账给供应商
	* @return Map<String,Object>
	* @Date 2017年4月12日,下午3:34:09
	*/
	public Map<String,Object> unconfirmOrderTransferProvider(Map<String, Object> paramMaps) throws ServiceException;
	
	/** 
	* @Title: updateOrdersListStatus 
	* @Author: 王瑞清
	* @Date:日期：2016年1月13日  时间：上午11:53:09
	* @Description: 更新状态
	* @param status
	* @param id
	* @throws ServiceException
	* @return Integer
	* @Version 1.0.0
	*/ 
	public Integer updateOrdersListStatus(Integer status,Integer id) throws ServiceException;
	
	/**
	 * 
	 * @MethodName addOrderReceiveAddress
	 * @Description 添加订单收货地址
	 * 
	 * @author chenpy
	 * @date 2016年1月13日 下午4:53:07
	 * @param 
	 * @return Map<String,Object>
	 * @VERSION 1.0.0
	 */
	public Map<String, Object> addOrderReceiveAddress(HttpServletRequest request) throws ServiceException;
	
	/**
	 * 
	 * @MethodName cancelOrder
	 * @Description 取消订单
	 * 
	 * @author chenpy
	 * @date 2016年1月13日 下午5:53:07
	 * @param 
	 * @return Map<String,Object>
	 * @VERSION 1.0.0
	 */
	public Map<String, Object> deleteOrder(HttpServletRequest request) throws ServiceException;
	
	
	/** 
	* @Title: queryOrdersPayDetails 
	* @Author: 王瑞清
	* @Date:日期：2016年1月19日  时间：下午6:09:50
	* @Description: 订单详情
	* @param request
	* @throws ServiceException
	* @return Map<String,Object>
	* @Version 1.0.0
	*/ 
	public Map<String, Object> queryOrdersDetails(String orderIds, Integer customerId) throws ServiceException;
	
	
	public Map<String, Object> updateQueryOrdersPayDetails(String orderIds, Integer customerId) throws ServiceException;
	
	
	/** 
	* @Title: deleteOrdersListStatus0 
	* @Author: 王瑞清
	* @Date:日期：2016年3月31日  时间：上午11:08:42
	* @Description: 按用户删除预下单数据
	* @param customerId
	* @throws ServiceException
	* @return void
	* @Version 1.0.0
	*/ 
	public void deleteOrdersListStatus0(Integer customerId) throws ServiceException;
	
	
	/**
	 * 
	* @Title: queryGoodsInfoOfReturnGoods 
	* @Description: 查询退换货的商品信息
	* @param orderId
	* @param goodsId
	* @param goodsNormsValueId
	* @return
	* @throws ServiceException
	* @return Map<String,Object>
	* @throws
	 */
	public Map<String,Object> queryGoodsInfoOfReturnGoods(String orderId,String goodsId,String goodsNormsValueId )throws ServiceException;

	/** 
	  * @package com.sayimo.school.mall.module.order.service
	  * @author chenpy
	  * @Title:  
	  * @Description: 获取物流信息
	  * @param 
	  * @throws ServiceException
	  * @return Map<String,Object>
	  * @date 2016年4月27日
	  */ 
	public Map<String, Object> getLogisticInfo(Integer orderId,Integer customerId) throws ServiceException;
	
	/** 
	  * @package com.sayimo.school.mall.module.order.service
	  * @author chenpy
	  * @Title:  
	  * @Description: 
	  * @param 
	  * @throws 
	  * @return void
	  * @date 2016年5月26日
	  */ 
	public void updateOrderSumMoneyById(Integer ordersId, Double sumMoney) throws ServiceException;

	/** 
	* @Title: iinsertOrdersList 
	* @Description: 
	* @param orders
	* @return
	* @return int
	* @throws 
	*/ 
	public int insertOrdersList(OrdersList orders)throws ServiceException;

	/** 
	* @Title: queryOrdersNormsInfoById 
	* @Description: 
	* @param orderId
	* @return
	* @return List
	* @throws 
	*/ 
	@SuppressWarnings("rawtypes")
	public List queryOrdersNormsInfoById(Integer orderId)throws ServiceException;

	/** 
	* @Title: updateOrdersById 
	* @Description: 
	* @param orders
	* @return void
	* @throws 
	*/ 
	public MessageObject updateOrdersById(OrdersList orders)throws ServiceException;
	
	/** 
	  * @package com.sayimo.school.mall.service.ope.impl
	  * @author chenpy
	  * @Title:  
	  * @Description: 
	  * @param 
	  * @throws ServiceException 
	  * @throws 
	  * @return String
	  * @date 2016年6月22日
	  */ 
	public String getNormsValueString(String goodsNormsValueIds) throws ServiceException;
	
	 /**
	 * @Package com.sayimo.school.mall.module.order.service
	 * @Author 龚益君
	 * @MethodName:queryPaySuccessOrder
	 * @Description:更改微信支付成功，本地依然未支付的订单
	 * @param customerId
	 * @return
	 * @throws ServiceException
	 * @Date 2016年9月26日,下午3:39:32
	 */
	public String updatePaySuccessOrder(Integer customerId) throws ServiceException; 
	
	 /**
		 * @Package com.sayimo.school.mall.module.order.service
		 * @Author 龚益君
		 * @MethodName:orderQuery
		 * @Description:查询微信支付成功，本地依然未支付的订单
		 * @param ordersNo
		 * @return
		 * @throws JDOMException
		 * @throws IOException
		 * @Date 2016年9月26日,下午3:40:01
		 */
		public boolean orderQuery(String ordersNo) throws Exception;
	/**
	 * 
	 * @MethodName paySuccess
	 * @Description 订单支付成功，修改订单状态、插入订单流程、修改商品购买人数
	 * 
	 * @author chenpy
	 * @date 2016年1月8日 下午5:35:36
	 * @param
	 * @return Map
	 * @throws Exception
	 * @throws DaoException
	 * @throws ServiceException
	 * @VERSION 1.0.0
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public Map paySuccess(Map payMap) throws Exception;
	/**
	 * 
	 * @MethodName callbackALiPay
	 * @Description 支付宝异步回调
	 * @author wangyang
	 * @date 2017年3月2日 上午9:14:22
	 * @param 
	 * @return String
	 * @throws Exception 
	 */
	public String callbackALiPay()throws Exception;
	 /**
	 * @Package com.sayimo.maker.mall.orders.service
	 * @Author 龚益君
	 * @MethodName:providerConfirmSendGoods
	 * @Description:商家发货
	 * @param request
	 * @return
	 * @throws ServiceException
	 * @Date 2017年3月6日,上午9:33:12
	 */
	public Map<String, Object> providerConfirmSendGoods(HttpServletRequest request) throws ServiceException;
	 /**
	 * @Package com.sayimo.maker.mall.orders.service
	 * @Author 龚益君
	 * @MethodName:providerReimburse
	 * @Description:商家同意退款
	 * @param request
	 * @return
	 * @throws ServiceException
	 * @Date 2017年3月6日,上午9:39:24
	 */
	public Map<String, Object> providerReimburse(HttpServletRequest request) throws ServiceException;
	 /**
	 * @Package com.sayimo.maker.mall.orders.service
	 * @Author 龚益君
	 * @MethodName:sayimoReimburse
	 * @Description:平台确认退款
	 * @param request
	 * @return
	 * @throws ServiceException
	 * @Date 2017年3月7日,下午3:18:35
	 */
	public Map<String, Object> sayimoReimburse(HttpServletRequest request) throws ServiceException;
}

